RxJava的浅析 —— —— 有这一篇就够了

RxJava与Retrofit相结合:

                                    (一)Rxjava2+Retrofit完美封装 - smily的博客 - CSDN博客

                                    (二)Rxjava2+Retrofit之Token自动刷新 - smily的博客 - CSDN博客

RxJava实际运用:

                                       GitHub - zhihu/zhihu-rxjava-meetup: 知乎 x RxJava Meetup

对应视频:

                                      Jiaheng的个人频道 - 视频列表

                                      给 Android 开发者的 RxJava 详解

概念:

RxAndroid是Rxjava的分支,专门用于Android的开发(实际也就比Rxjava多了几个类,比如Android端的调度器,LOOP等,多了些,主线程的操作),RX是一种编程理念,叫响应式编程,在不同编程语言有不同的实现


响应式编程(函数式编程):

方法的参数还是一个方法(不用再写匿名内部类,创建对象等等操作)



observebles(响应式):

就是根据某种状况,做对应的操作,比如有人在你面前跌倒,你条件反射的去拿手机录像...

我们做Android开发直接用RxAndroid即可,不过搭建环境时,Rxjava也要关联

官方源码地址:

   1.GitHub - ReactiveX/RxJava: RxJava – Reactive Extensions for the       JVM – a library for composing asynchronous and event-based programs using observable sequences for the Java VM.   

   2.GitHub - ReactiveX/RxAndroid: RxJava bindings for Android   

RxAndroid详细介绍: 【推荐】拆 JakeWharton 系列一之 RxAndroid

MVP,Retrofit,RxJava : 浅淡MVP的实战演习,让代码结构更简单~ 

github官方介绍:

> a library for composing asynchronous and event-based programs by using observable sequences.

> 一个在运行在Java VM上的库, 通过可观测的序列来组成一个异步的、基于事件的程序。

特色:观察者模式,lambada表达式,使用stream特性操作集合,进行异步操作(完全替代AsyncTask),用到很多Java1.8的新特性

* 解决问题:

        > 让复杂的程序逻辑回归简单、清晰,不用在考虑什么同步,异步的事情

        * Observable(被观察者) 和Subscriber(订阅者) 可以做任何事情

        - Observable可以是一个网络请求,Subscriber来显示请求结果;

        - Observable可以是一个数据库查询,Subscriber来显示查询结果;

        - Observable可以是按钮点击事件,Subscriber来响应点击事件;

        - Observable可以是大图片文件的加载解析, Subscriber来展示解析后的图片。

        * RxJava 的四个基本概念:观察者设计模式

        - Observable (可观察者/被观察者)

        - Observer (观察者/订阅者)

        - subscribe (订阅)

        - Event (事件)

         Rxjava=observables+Lambda+Stream+Schedulers

 RxJava的核心类 

        * Observable可观察者/被观察者

        * Observer/Subscriber观察者/订阅者

        一般我们用Subscriber更多,他不仅有observer有的方法,也包含了Observer方法没有的方法

*操作符(Operators)(常用的)

        - map 转换对象

        - flatMap 平铺对象

        - filter 过滤

        - distinct() 去重复(独特的)

        - take(int i) 从开始取出固定个数

        - doOnNext 输出元素之前的额外操作(不常用)

        - toList() 打包对象为集合

*调度器(Scheduler), 用于线程控制

        - Schedulers.immediate() 默认线程

        - Schedulers.newThread() 每次都创建新的线程执行

        - Schedulers.io() 包含线程池的机制, 线程个数无限, 可以复用空闲线程(常用)

        - Schedulers.computation() CPU密集计算线程, 线程池线程数和CPU数一致.处理图形运算

        - AndroidSchedulers.mainThread() Android更新界面的UI主线程(常用)

        - subscribeOn 可执行多次, 切换操作符的线程

        - observeOn 只需要执行一次, 指定订阅者执行的线程

添加java8的lambda支持

参见:GitHub - evant/gradle-retrolambda: A gradle plugin for getting java lambda support in java 6, 7 and android

 build.gradle引入依赖

        compile 'io.reactivex:rxandroid:1.2.1'

        compile 'io.reactivex:rxjava:1.1.6'

 RxJava 使用流程

        1. 创建 Observable 被观察者

        2. 初始化被观察(订阅)后的事件序列

        3. 创建 Observer/Subscriber 观察者/订阅者

        4. 订阅 Subscribe

RxJava在Android中的典型使用场景

        Scheduler线程切换

        定时任务 timer

        周期任务 interval

        合并多个请求 merge

        防止连续点击 throttleFirst

        解决回调嵌套Callback hell, flatMap


©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 159,835评论 4 364
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,598评论 1 295
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 109,569评论 0 244
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 44,159评论 0 213
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,533评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,710评论 1 222
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,923评论 2 313
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,674评论 0 203
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,421评论 1 246
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,622评论 2 245
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,115评论 1 260
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,428评论 2 254
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,114评论 3 238
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,097评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,875评论 0 197
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,753评论 2 276
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,649评论 2 271

推荐阅读更多精彩内容